package Fisica.Stock;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Fisica.Conexion;
import Logica.Cooperativa.Deposito;
import Logica.Cooperativa.Operador;
import Logica.Venta.Articulo;

public class FisicaStock {
	/*
	 * INSERT:
		INSERT INTO fac_mov_art2_capturador 
					(codigo2,descri2,fecha2,compra2,venta2,comprobante2,tipocomp2,ctacte2,deposito2,hora2,operador_codigo)
		VALUES (11296, 'CHOCOLATE MILKA OREO LECHE', '2014/08/22', 5, 0, 0, 'stock inicial', 'capturador', 0, '11:11:20.00', 5);
		*/
	
	public String INSERTARTICULO; 
	public String UPDATEARTICULO;		
			
			
	public static List<Operador> lisOperador (){
		@SuppressWarnings({ "unchecked", "rawtypes" })
		List<Operador> lista = new ArrayList();	
		String sql = "select * from operadores where operador_observa = 'activo' and operador_apellido <> 'ADMINISTRADOR';";
		try {
			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
			ResultSet rs = st.executeQuery();			
			
			while (rs.next()){
				Operador a = new Operador(); 
				a.setCodigo(rs.getString(1)); 				System.out.print("codigo: "+a.getCodigo());
				a.setApellido(rs.getString(2));				System.out.print(", apellido: "+a.getApellido());
				a.setCateg(rs.getInt(3));					System.out.print(", categoria: "+a.getCateg());
				a.setClave(rs.getString(4));			 	System.out.print(", clave: "+a.getClave());
				a.setObserva(rs.getString(5));				System.out.print(", observa: "+a.getObserva());
				a.setAcceso(rs.getString(6));				System.out.print(", acceso: "+a.getAcceso()+"\n");				
				
				lista.add(a);
				}			
		} catch (SQLException e) {
			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
			e.printStackTrace();
		} 		
		return lista;		
	}
	
	public static List<Deposito> lisDeposito (){
		@SuppressWarnings({ "unchecked", "rawtypes" })
		List<Deposito> lista = new ArrayList();	
		Deposito d1, d2;
		d1 = new Deposito(0, "Minorista");
		d2 = new Deposito(1, "Mayorista");
		lista.add(d1);
		lista.add(d2);
//		String sql = "select * from operadores where operador_observa = 'activo';";
//		try {
//			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
//			ResultSet rs = st.executeQuery();			
//			
//			while (rs.next()){
//				Deposito a = new Deposito(); 
//				a.setClave(rs.getInt(1)); 				System.out.print("codigo: "+a.getClave());
//				a.setDescripcion(rs.getString(2));		System.out.print(", apellido: "+a.getDescripcion());						
//				
//				lista.add(a);
////				}			
//		} catch (SQLException e) {
//			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
//			e.printStackTrace();
//		} 		
		return lista;		
	}
	
	
	public static void insertarArticulo(Articulo a){
		
		/** NO HACE FALTA REGISTRAR EL DEPOSITO.*/
		String SELECTARTICULO = "select * from fac_mov_art2_capturador where codigo2 = "+a.getCodInterno()+" and deposito2 = "+a.getDeposito()+";";
		
		String INSERTARTICULO = "INSERT INTO fac_mov_art2_capturador "
				+ "(codigo2,descri2,fecha2,compra2,venta2,comprobante2,tipocomp2,ctacte2,deposito2,hora2,operador_codigo) "
				+ "VALUES ('"+a.getCodInterno()+"', '"+a.getDescripcion()+"', '"+a.getFecha()+"', "+a.getCompra()+", 0, 0, 'stock inicial', 'capturador', "+a.getDeposito()+", '"+a.getHora()+"', '"+a.getOperadorCodigo()+"');";
		
		String UPDATEARTICULO = "UPDATE fac_mov_art2_capturador SET compra2 = (compra2 + "+a.getCompra()+"), fecha2 = '"+a.getFecha()+"', hora2 = '"+a.getHora()+"' WHERE codigo2 = "+a.getCodInterno()+";";
		try {
			/*System.out.println("cod Interno: "+a.getCodInterno());
			System.out.println("descripcion: "+a.getDescripcion());
			System.out.println("fecha: "+a.getFecha());
			System.out.println("compra: "+a.getCompra());
			System.out.println("deposito: "+a.getDeposito());
			System.out.println("Hora: "+a.getHora());
			System.out.println("usuario: "+a.getOperadorCodigo());*/
			
			PreparedStatement stSelect = Conexion.getConexion().prepareStatement(SELECTARTICULO);	
			ResultSet rsSelect = stSelect.executeQuery();		
			
			boolean existencia =  rsSelect.next();
			PreparedStatement st; 

			if (!existencia){
				st = Conexion.getConexion().prepareStatement(INSERTARTICULO);	
				st.executeUpdate();	
				System.out.println("inserto: "+a.getDescripcion());
			}else{
				st = Conexion.getConexion().prepareStatement(UPDATEARTICULO);	
				st.executeUpdate();	
				System.out.println("actualizo: "+a.getDescripcion());
			}
			
		}catch(Exception e){
			System.out.println("exception al intentar insertar: "+a.getDescripcion());
			e.printStackTrace();
		}
			
	}
	

	public static void main(String[] args) {
		FisicaStock p = new FisicaStock();
		p.lisOperador();


	}

}
